package com.jz.netthings.analysis.mapper;

import com.jz.netthings.analysis.bean.link.LinkAnalysisProviderSupport;
import com.jz.netthings.support.AdscmPage;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

@Repository
public interface XyDevelopAnalysisMapper {

    /**
     * 查询某个时间段每月的采浆总量
     * @param beginTime1
     * @param endTime1
     * @param beginTime2
     * @param endTime2
     * @return
     */
    List<Map<String,String>> getMonthCollCount(@Param("beginTime1") String beginTime1,@Param("endTime1") String endTime1,@Param("beginTime2") String beginTime2,@Param("endTime2") String endTime2);

    /**
     * 查询某个时间段每天的采浆总量
     * @param beginTime1
     * @param beginTime2
     * @param endTime
     * @return
     */
    List<Map<String,String>> getDayCollCount(@Param("beginTime1") String beginTime1, @Param("beginTime2") String beginTime2, @Param("endTime") String endTime);
    /**
     * 查询某个时间段内的献浆总量，根据年分组（查询指定时间段内每年的献浆总量）
     * @param beginTime
     * @param endTime
     * @return
     */
    List<Map<String,Object>> getCollCountGroupByYear(@Param("beginTime") String beginTime, @Param("endTime") String endTime);


    /**
     * 查询今年、去年、前年的每月的献浆总量
     * @param beginTime1
     * @param endTime1
     * @param beginTime2
     * @param endTime2
     * @return
     */
    List<Map<String, Object>> getCollCountGroupByMonth(@Param("beginTime1") String beginTime1,@Param("endTime1") String endTime1,@Param("beginTime2") String beginTime2,@Param("endTime2") String endTime2);

    List<Map<String, Object>> getCollCountGroupByMonthAndCreateYear(@Param("beginTime1") String beginTime1,@Param("endTime1") String endTime1,@Param("beginTime2") String beginTime2,@Param("endTime2") String endTime2);

    /**
     * 获取两个时间段之间的所有月份
     * @param beginTime
     * @param endTime
     * @return
     */
    List<String> getMonthBetween(@Param("beginTime") String beginTime,@Param("endTime") String endTime);

    /**
     * 获取两个时间段之间，每个月的建档人数
     * @param beginTime1
     * @param endTime1
     * @param beginTime2
     * @param endTime2
     * @return
     */
    List<Map<String, Object>> getProviderCreateCountByMonth(@Param("beginTime1") String beginTime1,@Param("endTime1") String endTime1,@Param("beginTime2") String beginTime2,@Param("endTime2") String endTime2);

    /**
     * 查询 beginTime2 到 endTime2 建档的浆员，在 beginTime1 到endTime1 这段时间段中，每月的返站浆员数量，以及返站的献浆量
     * @param beginTime1
     * @param endTime1
     * @param beginTime2
     * @param endTime2
     * @param endTime3
     * @return
     */
    List<Map<String, Object>> getFrequencyCountYearsMonth(@Param("beginTime1") String beginTime1,@Param("endTime1") String endTime1,@Param("beginTime2") String beginTime2,@Param("endTime2") String endTime2,@Param("endTime3") String endTime3);

    /**
     * 获取两个时间段之间的年建档总人数（根据年分组）
     * @param beginTime
     * @param endTime
     * @return
     */
    List<Map<String, Object>> getCreateCountYear(@Param("beginTime") String beginTime,@Param("endTime") String endTime);
    /**
     * 获取两个时间段之间的年R浆员总人数（根据年分组）
     * @param beginTime
     * @param endTime
     * @return
     */
    List<Map<String, Object>> getCreateRCountYear(@Param("beginTime") String beginTime,@Param("endTime") String endTime);
    /**
     * 获取两个时间段之间的月R浆员总人数（根据月分组）
     * @param beginTime
     * @param endTime
     * @return
     */
    List<Map<String, Object>> getCreateRCountMonth(@Param("beginTime1") String beginTime1,@Param("beginTime") String beginTime,@Param("endTime") String endTime);
    /**
     * 获取两个时间的只建了档，但未献浆（也不是R浆员）浆员总人数（根据月分组）
     * @param beginTime
     * @param endTime
     * @return
     */
    List<Map<String, Object>> getCreateNotComeCountMonth(@Param("beginTime1") String beginTime1,@Param("beginTime") String beginTime,@Param("endTime") String endTime);

    /**
     * 获取两个时间的只建了档，但未献浆（也不是R浆员）浆员总人数（根据年分组）
     * @param beginTime
     * @param endTime
     * @return
     */
    List<Map<String, Object>> getCreateNotComeCountYear(@Param("beginTime") String beginTime,@Param("endTime") String endTime);

    /**
     * 查询某段时间每年的淘汰浆员总人数（根据年分组）
     * @param beginTime1
     * @param endTime1
     * @param beginTime2
     * @param endTime2
     * @return
     */
    List<Map<String, Object>> getOutProviderCountYear(@Param("beginTime1") String beginTime1,@Param("endTime1") String endTime1,@Param("beginTime2") String beginTime2,@Param("endTime2") String endTime2);
    /**
     * 查询某段时间每个月的淘汰浆员总人数（根据月分组）
     * @param beginTime1
     * @param endTime1
     * @param beginTime2
     * @param endTime2
     * @return
     */
    List<Map<String, Object>> getOutProviderCountMonth(@Param("beginTime1") String beginTime1,@Param("endTime1") String endTime1,@Param("beginTime2") String beginTime2,@Param("endTime2") String endTime2);

    /**
     * 获取今年已献浆未链接浆员总条数
     * @param page
     * @return
     */
    Integer getThisYearComedNotLinkCount(@Param("page") AdscmPage<LinkAnalysisProviderSupport> page);

    /**
     * 分页查询今年已献浆未链接浆员基本信息
     * @param page
     * @return
     */
    List<LinkAnalysisProviderSupport> getThisYearComedNotLinkPage(@Param("page") AdscmPage<LinkAnalysisProviderSupport> page);

    /**
     * 查询某些浆员的总献浆量、今年、去年献浆量
     * @param page
     * @return
     */
    List<LinkAnalysisProviderSupport> getProviderCollCount(@Param("page") AdscmPage<LinkAnalysisProviderSupport> page);

    /**
     * 获取已链接浆员今年未进站的数量
     * @param page
     * @return
     */
    Integer getLinkedThisYearNotComedCount(@Param("page") AdscmPage<LinkAnalysisProviderSupport> page);

    /**
     * 获取已链接浆员今年未进站的浆员基本信息
     * @param page
     * @return
     */
    List<LinkAnalysisProviderSupport> getLinkedThisYearNotComedPage(@Param("page") AdscmPage<LinkAnalysisProviderSupport> page);

    /**
     * 查询某些浆员某段时间分别的献浆量
     * @param page
     * @return
     */
    List<LinkAnalysisProviderSupport> getProviderCollCountByTimes(@Param("page") AdscmPage<LinkAnalysisProviderSupport> page);

}
